<?php

declare(strict_types=1);

namespace App\Helpers;

use App\Model\Message;
use App\Model\Service\CacheService;
use App\Model\UserProfile;
use App\Model\VoiceCall;
use Hyperf\Utils\Context;

class ConfigUtil
{
    static function getBusiConfig($key = '')
    {
        return $key ? config('busi.' . $key) : config('busi');
    }

    /**
     * 金币和人民币兑换
     */
    static function getCoinRate()
    {
        return config('busi.coin_rate');
    }

    /**
     * 提现手续费
     */
    static function getWithdrawFeeRate()
    {
        return config('busi.withdraw_fee_rate');
    }

    /**
     * 官方推送IM账号
     */
    static function getOfficialImAccount($officialType = 1)
    {
        switch ($officialType) {
            case 4:
                return config('busi.xiaomishuImAccount');
            case 3:
                return config('busi.wechatApplyImAccount');
            default:
                return config('busi.officialImAccount');
        }
        return config('busi.officialImAccount');
    }

    /**
     * 官方推送ID
     */
    static function getOfficialUserId()
    {
        return config('busi.officialUserId');
    }

    /**
     * 系统消息IM账号
     */
    static function getSystemImAccount()
    {
        return config('busi.systemImAccount');
    }

    /**
     * 系统消息ID
     */
    static function getSystemUserId()
    {
        return config('busi.systemUserId');
    }

    /**
     * 获取系统头像
     */
    static function getSystemIcon()
    {
        return 'https://aijiang-img.oss-cn-shenzhen.aliyuncs.com/logo.jpg';
    }

    /**
     * 语聊设置
     */
    static function getCoinSetting($coinType = 0, $getMinCoin = false)
    {
        // $settingList = $coinType == 0 ? config('busi.coin_setting') : config('busi.video_coin_setting');
        switch ($coinType) {
            //语音
            case 0:
                $settingList = config('busi.coin_setting');
                break;
            //视频
            case 1:
                $settingList = config('busi.video_coin_setting');
                break;
            //私聊
            case 2:
                $settingList = config('busi.chat_coin_setting');
                break;
        }
        return $getMinCoin ?  $settingList[0]['coin'] : $settingList;
    }

    /**
     * 新手福利的首充免费时长（分钟）
     */
    static function getNewFreeCallTime($new = false)
    {
        return !$new ? config('busi.new_commer_free') : config('busi.new_recharge_free');
    }

    /**
     * 每笔消费的抽成比
     */
    static function getConsumeRate($hostId = 0)
    {
        // $guildHostShare = CacheService::getGuildHostSharePercent($hostId);
        // if ($guildHostShare > 0 && $guildHostShare < 1) return 1 - $guildHostShare;
        $profile = UserProfile::where('user_id', $hostId)->first();
        if ($profile && $profile->host_share > 0) return 1 - $profile->host_share;
        return config('busi.commission.consume');
    }

    /**
     * 提现的抽成比
     */
    static function getWithdrawRate()
    {
        return config('busi.commission.withdrawal');
    }

    /**
     * 语聊提醒的剩余时间
     */
    static function getTipRemainMinuts()
    {
        return config('busi.tip_remain_minutes');
    }

    /**
     * 新手免费聊天时间（分钟）
     */
    static function getNewFreeMinuts()
    {
        return config('busi.new_free_minutes');
    }

    /**
     * 上线推荐列表的间隔
     */
    static function getOnlineRecInterval()
    {
        return config('busi.online_rec_interval');
    }

    /**
     * 充值商品配置
     */
    static function getRecharge(
        $subjectId = 0,
        $buyChannel = 'wechat',
        $showAll = true,
        $firstPay = false
    ) {
        $rechargeConfig = $buyChannel == 'apple' ? config('busi.recharge_apple') : config('busi.recharge');
        if (!$showAll) {
            $rechargeConfig = array_filter($rechargeConfig, function ($var) {
                return ($var['subject_id'] < 100);
            });
        }
        //非
        if (!$firstPay) {
            $rechargeConfig[0]['send'] = $rechargeConfig[1]['send'] = 0;
            $rechargeConfig[0]['extra'] = $rechargeConfig[1]['extra'] = '';
        }
        if (!$subjectId) return $rechargeConfig;
        foreach ($rechargeConfig as $subject) {
            if ($subject['subject_id'] == $subjectId) return $subject;
        }
        return [];
    }

    /**
     * 技能配置
     */
    static function getSkills()
    {
        return config('busi.skills');
    }

    /**
     * 邀请活动奖励比
     */
    static function getInviteReward($type = 'recharge')
    {
        return config('act.invite.reward')[$type];
    }

    /**
     * 获取私聊设置
     */
    static function getChat($key = '')
    {
        return $key ? config('busi.chat')[$key] : config('busi.chat');
    }

    /**
     * 每日任务
     */
    static function getDailyTasks($type = 'host')
    {
        $appId = Context::get('app_id');
        $tasks = config('act.daily_task')[$type];
        unset($tasks[104]);
        unset($tasks[5]);
        if ($appId == env('DAILY_TASK_FORBID_APPID', 6)) {
            unset($tasks[104]);
            unset($tasks[5]);
        }
        return $tasks;
    }

    /**
     * 每天赠送系统礼物数量
     */
    static function getSysGiftLmt()
    {
        return config('act.sys_gift.max_times_perday');
    }

    /**
     * 每次赠送系统礼物的人数
     */
    static function sysGiftHostMax()
    {
        return config('act.sys_gift.max_host_perday');
    }

    /**
     * 一天赠送总系统礼物数
     */
    static function sysGiftMax()
    {
        return config('act.sys_gift.max_perday');
    }

    /**
     * 给单个声优送礼数限制
     */
    static function sysGiftNumMaxToOne()
    {
        return config('act.sys_gift.max_gift_num_to_one');
    }

    /**
     * 系统礼物的有效时间
     */
    static function sysGiftExpireTime($hostSendMale = false)
    {
        return !$hostSendMale ? 180 : 3600;
    }

    /**
     * 随心聊费用配置
     */
    static function getQuickCallCoin($type = 'voice')
    {
        return config('busi.quick_call')[$type];
    }

    /**
     * 福利费用配置
     */
    static function getFreeCallCoin($type = 'voice')
    {
        return config('busi.free_call')[$type];
    }

    /**
     * 获取呼叫白名单的账号
     */
    static function getCallWhitelist($from = 'free_daily')
    {
        $env = env('APP_ENV', 'production');
        $conf = config('busi.call_whitelist')[$env] ?? [];
        if (!$conf || !$conf['enable']) return [];
        return config('busi.call_whitelist')[$env][$from] ?? [];
    }

    /**
     * 男性打招呼礼物消息
     */
    static function pickMaleWakeupMsg()
    {
        $msgs = [
            // '附近3公里内有位小姐姐给你发来聊天邀请 >>',
            // '你老家的小姐姐给你发来一个表情包 >>',
            '新增13位异性访客，注意查看 >>',
            '最近一周有32位异性朋友查看你的主页  >>',
            '同城的小姑娘给你发来视频通话，点击接听~ >>',
            '一起喝奶茶，要去么？ >>',
            '对方发来一张**照片，点击查看>>',
            '这个周末一起看电影怎么样？ >>',
            '附近小姐姐发出约会申请，前往查看 >>',
            '每天送你一张免费通话券，记得查收 >>',
            '对方发来一个小视频 >>',
            '你微信号多少？ >>',
        ];
        return $msgs[array_rand($msgs)];
    }

    /**
     * 天天福利的金币设置
     */
    static function getDailyFreeCoin($callType = 1, $isHost = false)
    {
        //主播呼叫免费
        if ($isHost) return 0;
        return $callType == VoiceCall::CALL_TYPE
            ? ConfigUtil::getFreeCallCoin('voice')
            : ConfigUtil::getFreeCallCoin('video');
    }

    /**
     * 天天福利 - 主播呼叫引导充值
     */
    static function freeCallRechargeReward()
    {
        return config('act.daily_free.recharge');
    }

    /**
     * 天天福利 - 主播一天呼叫次数
     */
    static function freeCallHostLmt()
    {
        return config('act.daily_free.host_call_times');
    }

    /**
     * 天天福利 - 男用户一天被主播呼叫的次数
     */
    static function freeCallUserLmt()
    {
        return config('act.daily_free.user_called_times');
    }

    /**
     * 微信支付配置信息
     */
    static function getWechatPayInfo($type = 'app_id',$mch_id = null)
    {
        $appId = Context::get('app_id');
        //微信支付
        $appConf = [
            //甜蜜伴侣
            6 => ['app_id' => 'wx2dcc32211af1a596', 'api_key' => '16cadc4c4badd7b685ecaf403c7fd77a'],
            //友聊
            8 => ['app_id' => 'wxdcb243529933a62a', 'api_key' => '16cadc4c4badd7b685ecaf403c7fd77a'],
            //来聊
            9 => ['app_id' => 'wxe28a1fd707ccee93', 'api_key' => '16cadc4c4badd7b685ecaf403c7fd77a'],
            //附近同城陌玩
            100 => ['app_id' => 'wxde0067be49b887cb', 'api_key' => '16cadc4c4badd7b685ecaf403c7fd77a'],
            //附近同城陌遇
//            101 => ['app_id' => 'wx100939b3211a2f89', 'api_key' => '16cadc4c4badd7b685ecaf403c7fd77a'],
            101 => ['app_id' => 'wx100939b3211a2f89', 'api_key' => '16cadc4c4badd7b685ecaf403c7fd77a'],
            //乐娱交友
            102 => ['app_id' => 'wxb599f6200bbc1203', 'api_key' => '16cadc4c4badd7b685ecaf403c7fd77a']
        ];

        $data = $appConf[$appId][$type] ?? config('pay.wechat')[$type];
        log_info(__METHOD__ . "==AppId:{$appId}=={$type}:{$data}");
        return $data;
    }

    /**
     * 查看微信的价格
     */
    static function getWechatCheckCoin($userId = 0)
    {
        return 5200;
    }

    /**
     * 免费私信条数限制
     */
    static function getFreeMsgNum()
    {
        return 10;
    }

    /**
     * 获取应用名
     */
    static function getAppName($appId = 1)
    {
        $appName = [
            100=>'遇见爱',
            101=>'有缘聊',
            102=>'乐娱交友'
        ];
        return $appName[$appId] ?? '遇见爱';
    }

    /**
     * 获取包名
     */
    static function getPkgName($appId = 101)
    {
        $appName = [
            100 => 'com.xylx.wchat',
            101 => 'com.chat.myu',
            102 => 'com.pengchen.penglive'
        ];
        return $appName[$appId] ?? 'com.chat.myu';
    }

    /**
     * 打招呼金币
     */
    static function getGreetMsgCoin()
    {
        return 0.2;
    }
}
